<?php

class ZFKiller_Msg {

	const MSG_ERROR = 'error_msg';
	const MSG_INFO = 'info_msg';
	const MSG_OK = 'succes_msg';
	const MSG_SAVED = 'saved_msg';
	const MSG_WARN = 'exclamation_msg';

	private static $_sessionNameSpace = 'ZFKiller_Msg';
	private static $_session;
	private static $_clearAfterRender = true;
	private $_msgStatus = array(
		self::MSG_ERROR => 'Error',
		self::MSG_INFO => 'Info',
		self::MSG_OK => 'Sucesso',
		self::MSG_SAVED => 'Salvo',
		self::MSG_WARN => 'Aviso',
	);

	public function msg() {
		$session = self::getSession();
		$r = '';
		foreach ($session->msg as $msg) {
			$r .= '<div class="alert ' . $msg['type'] . '"><strong>' . $this->_msgStatus[$msg['type']] . ': </strong>'
					. $msg['msg'] . '</div>';
		}

		if (self::$_clearAfterRender) {
			$session->msg = array();
		}

		return $r;
	}

	/**
	 * Adiciona mensagens para o usuário
	 *
	 * @param  string $type Tipo da mensagem (ok|error|warn|info)
	 * @param  string $msg Mensagem
	 * @return void
	 */
	public static function addMsg($msg, $type = self::MSG_OK) {
		$session = self::getSession();

        $msg = '[' . date('H:i:s', time()) . '] ' . $msg;
		$session->msg[] = array('type' => $type, 'msg' => $msg);
	}

	/**
	 * @return Zend_Session_Namespace
	 */
	public static function getSession() {
		if (is_null(self::$_session)) {
			self::$_session = new Zend_Session_Namespace(self::$_sessionNameSpace);
			if (!isset(self::$_session->msg))
				self::$_session->msg = array();
		}
		return self::$_session;
	}

}